package com.naiterui.ehp.bs.emr.vo.patient;


import com.naiterui.ehp.bp.utils.date.DateUtil;
import com.naiterui.ehp.bs.emr.vo.UploadFileVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.util.List;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author gaoliangliang
 * @date 2019/9/6 11:26 上午
 * @since 1.0.0
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ApiModel("患者病情描述详情")
@Validated
public class PatientDiseaseVO {

    @ApiModelProperty(value = "病情id")
    private String id;

    @ApiModelProperty(value = "患者ID")
    private Long patientId;

    @NotNull(message = "就诊人ID不能为null")
    @ApiModelProperty(value = "就诊人id")
    private Long inquirerId;

    @ApiModelProperty(value = "就诊人与患者关系")
    private Integer relation;

    @ApiModelProperty(value = "患者姓名")
    private String patientName;
    @ApiModelProperty(value = "患者年龄")
    private Integer patientAge;
    @ApiModelProperty(value = "患者年龄单位，周、个月、岁")
    private String patientAgeUnit;
    @ApiModelProperty(value = "患者显示年龄(包含年龄单位)")
    private String patientAgeStr;
    @ApiModelProperty(value = "患者性别，0:女，1:男，2:未知")
    private Integer patientGender;
    @ApiModelProperty(value = "医生ID")
    private Long doctorId;
    /**
     * 线下就诊信息
     */
    @ApiModelProperty(value = "线下问诊医生名")
    private String offlineDoctor;
    @ApiModelProperty(value = "线下问诊医院名")
    private String offlineHospital;
    @ApiModelProperty(value = "线下就诊医院ID")
    private Long hospitalId;
    @ApiModelProperty(value = "线下问诊科室名称")
    private String offlineDepartment;
    @ApiModelProperty(value = "线下问诊诊断")
    @NotBlank(message = "请填写线下诊断")
    private String offlineDiagnosis;

    @Valid
    @ApiModelProperty(value = "线下病例/处方图片")
    private List<String> offlineERImgs;

    @ApiModelProperty(value = "线下病例/处方pdf文件")
    private List<UploadFileVO> offlineERPdfs;

    @ApiModelProperty(value = "线下问诊检查图片")
    private List<String> offlineDiagnosisImgs;

    @ApiModelProperty(value = "线下问诊检查图片地址信息")
    private List<MultipartFile> offlineDiagnosisImgFiles;

    /**
     * 病情描述信息
     */
    @ApiModelProperty(value = "病情主诉")
    private String description;
    @ApiModelProperty(value = "患病时间")
    private Integer cycleCode;
    private String diseaseCycle;
    @ApiModelProperty(value = "病情描述图片")
    private List<String> descriptionImgs;

    /**
     * 服药情况
     */
    @ApiModelProperty(value = "当前服用的药物描述")
    private String drugs;
    @ApiModelProperty(value = "处方图片或药盒图片")
    private List<String> drugsImgs;

    /**
     * 既往病史
     */
    @ApiModelProperty(value = "过敏记录描述")
    private String allergy;
    @ApiModelProperty(value = "过往病史描述")
    private String pastHistory;


    @ApiModelProperty(value = "创建时间")
    @DateTimeFormat(pattern = DateUtil.DATE_TIME)
    private Date createdAt;

    /**
     * 资料丢失标识(0，否；1，是)
     */
    @ApiModelProperty(value = "资料丢失标识(0，否；1，是)")
    private Integer dataLossTag;

    /**
     * 线下是否就诊
     */
    @ApiModelProperty(value = "线下是否就诊(0，否；1，是)")
    private Integer offlineSeeDoctor;
}
